package com.ld.control.business.task.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ld.control.business.task.model.SubTaskExampleModel;
import com.ld.control.business.task.vo.req.SubTaskExampleReqVo;
import com.ld.control.business.task.vo.req.TaskExampleReqVo;
import com.ld.control.business.task.vo.resp.SubTaskExampleRespVo;

import java.util.List;

/**
 * <p>
 * 子任务实例表 服务类
 * </p>
 *
 * @author wangfeng
 * @since 2024-05-14
 */
public interface SubTaskExampleService extends IService<SubTaskExampleModel> {


    /**
     * 添加子任务信息
     * @param reqVo
     */
    void add(SubTaskExampleReqVo reqVo);

    /**
     * 运行子任务实例
     * @param taskExampleId
     * @return
     */
    Boolean runSubTaskExample(Long taskExampleId);

    /**
     * 执行下一个子任务实例，如果没有了测返回false
     * @param processNodeExampleId
     * @return
     */
    Boolean runNextSubTaskExample(Long processNodeExampleId);

    /**
     * 修改子任务状态
     * @param processNodeExampleModelId
     * @param status
     */
    void updateStatusByNodeId(Long processNodeExampleModelId, Integer status);

    /**
     * 根据主键id修改状态
     * @param id
     * @param status
     */
    void updateStatus(Long id, Integer status);

    /**
     * 获取某个任务实例的第一个子任务实例
     * @param taskExampleModelId
     * @return
     */
    SubTaskExampleModel getFirstSubTaskExample(Long taskExampleModelId);

    /**
     * 根据任务实例id`获取子任务实例列表
     * @param taskExampleModelId
     * @return
     */
    List<SubTaskExampleRespVo> getListByTaskExampleModelId(Long taskExampleModelId);

}
